-
Notifications
You must be signed in to change notification settings - Fork 756
partial_renderer: Separate the geometry from the rendering to compute dirtyness #9467
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Before:
After:
|
2d3d266
to
078c224
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wonderful - thank you!
This is dangerous, I hope i didn't break anything. |
I was thinking the same. It should be relatively fast anyway. |
88a5796
to
c880ecf
Compare
New patch that do no longer have two tracker, but just one for the rendering:
The result is that As for the test failure, this is because
NaN and before, it would rely on the tracker to figure out what changed. But now, it relies on the != operator between bounding rect. And NaN is never equal to itself.
|
8137d32
to
804f731
Compare
The actual reason why this was slower and taking more memory was because we were still visiting clipped (invisible) items. After that being fixed, we are much faster. Now with the latest change from this patch:
Master without this patch
|
…acker This way we avoid rendering when only the layout is dirty but didn't actually change
We just always query all the geometry anyway
Since every renderer is now always clipping the text, we don't need to account for out of bound drawing. The other optimization of trying not to draw things if the bounding box is smaller is not really a good one since computing the bounding box is itself too expensive and not cached.
No chance we find something dirty there
It uses NaN in one of the coordinate. It used to be fine because we would rely on the tracker to know if anything had changed. But now that we always compare the rectangle and NaN is always != NaN, we would redraw too much for this test
804f731
to
8c5c28f
Compare
That way when a layout is dirty because some text inside changed, we don't redraw the whole screen if most item don't move.
(PR best viewed commit by commit)